mysql 中 order by in 和order by if 的用法 您所在的位置:网站首页 in order 的用法 mysql 中 order by in 和order by if 的用法

mysql 中 order by in 和order by if 的用法

2024-07-09 21:42| 来源: 网络整理| 查看: 265

mysql 中 order by in 和order by if 的用法 一、order by in

举例:不知道大家有没有做过SQL zoo的题目,里面有一题就是对这个知识点的考查 题目如下:

可以将表达式主题IN(“化学”,“物理”)用作值-它可以是0或1。 显示1984年获奖者和主题(按主题和获奖者名称排序);但最后列出化学和物理。

其实这个题目已经给提示了,直接运行初始代码可以看到 在这里插入图片描述 代码运行结果 subject in 符合里面的条件的话是1,否则是0.明白这个原理之后就可以来看看正确答案了

SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject IN (‘Physics’,‘Chemistry’), subject , winner ;

在这里插入图片描述 如果subject的值在(‘Chemistry’,‘Physics’)里面,返回1,否则返回0,所以,满足条件的数据,因为返回值是1,进行asc排序的时候,就被放在最后,然后再进行后面的排序

二、order by if

直接放图吧,是对题目的第二种解法 在这里插入图片描述 If(subject=‘Chemistry’ or subject=‘Physics’,1,0) 中1,0的意思是,对 subject 附加一个隐藏属性,这个属性可以是0或者1;在排序的时候,判断subject是不是等于物理或化学,如果等于,则返回1;否则,返回0。order by 默认是升序,所以值为1的会排在后面。

想要实现排序放在最前面的话只要把“1,0”改成“0,1”即可;也可以在if 后面添加desc来改变放在最前或最后的位置(in 的方法同样适用)。

可以发现,if比较适合对一到两个条件的筛选,多了就会显得冗长繁琐,in 适合对多个条件的筛选,代码简洁。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有